package com.jxtc.enterprise.common.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jxtc.enterprise.admin.dto.StoreWithTenantDTO;
import com.jxtc.enterprise.admin.dto.TenantRelatedStoreDTO;
import com.jxtc.enterprise.admin.dto.TenantRelatedStoreDetailDTO;
import com.jxtc.enterprise.common.entity.Store;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface StoreMapper extends BaseMapper<Store> {

    /**
     * 根据店铺查询关键字模糊查询店铺信息，排除已经绑定指定租户的店铺，并分页返回携带租户名称的店铺信息（按店铺创建时间降序排列）
     *
     * @param page         分页参数
     * @param storeKeyword 店铺查询关键字，可以是店铺名、店主名或店铺地址
     * @param tenantId     需要排除的的租户id
     * @return 分页返回携带租户名称的店铺信息
     */
    Page<StoreWithTenantDTO> queryCanAssignableStores(Page<StoreWithTenantDTO> page,
                                                      @Param("keyword") String storeKeyword,
                                                      @Param("tenantId") String tenantId);



    Page<TenantRelatedStoreDTO> queryTenantRelatedStores(Page<TenantRelatedStoreDTO> page,
                                                         @Param("tenantId") String tenantId);


    Page<TenantRelatedStoreDTO> queryAuthorizedStores(Page<TenantRelatedStoreDTO> page,
                                                      @Param("tenantId") String tenantI);

    /**
     * 租户管理系统，店铺管理页面，展示 租户直属 和 被授权的店铺详情
     * @param page
     * @param tenantId
     * @return
     */
    Page<TenantRelatedStoreDetailDTO> queryTenantRelatedStoreDetails(Page<TenantRelatedStoreDetailDTO> page,
                                                                     @Param("tenantId") String tenantId);
}
